import { createRouter, createWebHistory } from 'vue-router'

import { useLoginStore } from '@/stores/login'
import index from '@/views/index.vue'
import login from '@/views/login/login.vue'
import register from '@/views/register/register.vue'

//声明元数据
declare module 'vue-router' {
  interface RouteMeta {
    // 每个路由都必须声明
    requiresAuth: boolean
  }
}

//路由信息
const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path: '/',
      name: '系统主页',
      redirect: '/index',
      // 只有经过身份验证的用户才能创建帖子
      meta: { requiresAuth: true }
    },
    {
      path: '/login',
      name: '用户登陆',
      component: login,
      // 只有经过身份验证的用户才能创建帖子
      meta: { requiresAuth: false }
    },
    {
      path: '/register',
      name: '用户注册',
      component: register,
      // 只有经过身份验证的用户才能创建帖子
      meta: { requiresAuth: false }
    },
    {
      path: '/index',
      name: '系统主页',
      component: index,
      // 只有经过身份验证的用户才能创建帖子
      meta: { requiresAuth: true }
    }
  ]
})
//添加路由的前置守卫，做登陆状态的检测
router.beforeEach(async (to, from) => {
  if (to.meta.requiresAuth) {
    //判断当前界面是否需要鉴权
    //登陆状态的存储器
    const loginStore = useLoginStore()
    if (!loginStore.isLogined()) {
      // 将用户重定向到登录页面
      return { path: '/login' }
    }
  }
})

export default router
